#include <map>
#include <vector>

namespace MHX
{
	class Armature;
	class Bone;
	class Face;
	class FaceProperty;
	class FaceUV;
	class File;
	class Material;
	typedef std::string MaterialReference;
	class Mesh;
	class TextureFace;
	class Vert;
	class VertexGroup;

	typedef std::map<std::string, Armature> Armatures;
	typedef std::vector<Bone> Bones;
	typedef std::vector<Face> Faces;
	typedef std::vector<FaceProperty> FaceProperties;
	typedef std::vector<FaceUV> FaceUVs;
	typedef std::vector<File> Files;
	//typedef std::map<std::string, Material> Materials;
	typedef std::vector<Material> Materials;
	typedef std::vector<MaterialReference> MaterialReferences;
	typedef std::map<std::string, Mesh> Meshes;
	typedef std::vector<TextureFace> TextureFaces;
	typedef std::vector<Vert> Verts;
	typedef std::vector<VertexGroup> VertexGroups;

	typedef std::string Token;
	typedef std::vector<std::string> Strings;
	typedef std::vector<std::string> TokenLine;
	typedef TokenLine::const_iterator TokenIterator;	
	typedef std::vector<TokenLine> TokenLines;
	typedef TokenLines::const_iterator LineIterator;
}